/* 公共的tap点击事件 */
let timer;
export default {
	data() {
		return {
			HDRIndex: 0,// 画质索引
			seekEvent: 0,// 定时器,用于切换视频画质后恢复视频进度
			/* 3.5.1 新增HDRseekEvent补充的另一个方面
			 * 为true时，也可以用于当用户调节视频进度小于跳过片头时间时，不再自动执行跳过片头的时间
			 * bug反馈为：跳过视频片头，无法快进到跳过片头之前的时间去，比如跳过片头为第60秒，我想手动跳到底30秒，但会在跳到30秒后又自动回到60秒
			 */
			HDRseekEvent: false,// 清晰度切换状态，用于修复切换视频画质后不去走TexeBubble.js里的跳过片头的代码块（只在h5和微信有此现象，app正常）
		}
	},
	methods:{
		// 视频画质切换
		async VideoUrlHDRlistItem(item,index){
			//console.log('画质切换item')
			//console.log(item)

			/* @1. 通过>>isVIP=true&&isUserVIP=true
			 * @2. 通过>>isVIP=false&&isUserVIP=true||false
			 * @3. 不通过>>isVIP=true&&isUserVIP=false
			 */
			
			// 判断当前画质是否需要VIP并且用户不是VIP身份
			if (item.isVIP==true&&this.isUserVIP==false){
				// 不可以播放视频，然后把事件回调出去
				// @1. 这里采用统一的不是VIP身份回调出去
				
				// 将不是VIP身份回调出去
				let e = {
					Events:'UserVipFail',//失败的，不成功的
					UserVip:this.isUserVIP,//获取用户身份，不获取也是false
					msg:'当前画质需要VIP身份才可以播放，而用户身份不是VIP;UserVip=用户身份'
				}
				this.$emit('changeMyVideo',e)
				// 设置气泡文字显示的标题
				var title = '当前清晰度是VIP会员专属'
				// 设置气泡文字颜色
				var color = '#ffbc43'
				var options = {
					title,
					color,
					time:6000
				}
				// 打开气泡文字View抽屉盒子并设置标题
				this.openTextBubbleView(options)
				//
			}else {

				/* 2022-0125-0236 新增优化
				 * 修复bug：比如当前清晰度是1080P，此时用户又点击了1080P，就又再一次切换1080P的视频，这是不对的
				 */

				// 判断点击的清晰度按钮索引是否和已设置的清晰度索引是否一致，如果一致，则返回。不继续向下执行
				if (this.HDRIndex == index) return

				// 设置 清晰度切换状态 = true
				this.HDRseekEvent = true
				// 获取清晰度/画质标题(如1080P，4K等)
				var HDRTitle = item.HDRtitle
				// 获取是否是会员身份
				var isUserVipName
				if (this.isUserVIP==true) {
					isUserVipName = 'VIP会员'
				}else {
					isUserVipName = '普通会员'//老版本 叫 用户
				}
				
				// 设置气泡文字显示的标题
				var title = '尊敬的'+isUserVipName+'  ,  你正在切换至  '+HDRTitle
				// 设置气泡文字颜色
				var color = '#ffdc91'
				var options = {
					title,
					color,
					time:0//不延时关闭
				}
				// 打开气泡文字View抽屉盒子并设置标题
				this.openTextBubbleView(options)
				
				
				// 更新画质索引(清晰度)
				this.HDRIndex = index
				// 关闭抽屉面板Item项(关闭所有的Item项)
				this.closeDrawerItem()
				// 获取当前播放时间，用于视频画质切换后续播
				let currtime = this.timeUpdate[0].currentTime//当前时长(当前进度)
				//console.log('获取当前播放时间=='+currtime)
				
				// 获取视频标题
				let VideoTitle = item.title
				// 设置视频标题
				this.SetVideoTitle(VideoTitle)
				// 设置视频链接
				this.src = item.url
				// 设置视频自动播放(不设置的话，默认不知道播放)
				this.video_autoplay = true
				// 设置视频播放
				this.play()
				// 设置跳到切换视频画质之前的播放时间
				await this.SetVideoSeek(currtime)
				await this.isVideoPlay(HDRTitle)
				
				//
			}
			//
		},
		// 判断是否可以设置“跳到指定的播放时间”
		async SetVideoSeek(currtime){
			return new Promise((resolve,reject) =>{
				if (this.isPlay==false){
					clearTimeout(this.seekEvent)//清除定时器
					this.SetVideoSeek(currtime)
					reject()
					//console.log('还不可以设置视频进度')
				}else {
					this.seekEvent = setTimeout(()=>{
						this.seek(currtime)
						resolve()
						//console.log("已设置视频进度");
					},100);
				}
			})
		},
		// 是否已经是正在播放中
		async isVideoPlay(HDRTitle){
			return new Promise((resolve,reject)=>{
				if (this.isPlay==false){
					timer = setTimeout(()=>{
						// 销毁定时器
						clearTimeout(timer)
						// 重新获取播放状态
						this.isVideoPlay(HDRTitle)
					},300)
					//console.log('还在加载中')
					reject('还在加载中')
				}else {
					//console.log('正在播放中')
					resolve('正在播放中')
				}
			})
			.then(res=>{
				
				// #ifdef MP || H5
				// 播放
				this.play()
				// #endif

				// 关闭气泡文字提示
				this.closeTextBubbleView()
				setTimeout(()=>{
					// 设置气泡文字显示的标题
					var qhhtitle = '已切换至  '+HDRTitle
					// 设置气泡文字颜色
					var color = '#ffdc91'
					var options = {
						title:qhhtitle,
						color,
						time:3000
					}
					// 打开气泡文字View抽屉盒子并设置标题
					this.openTextBubbleView(options)
				},1000)
			})
		},
		// 选集切换
		VideoXuanJiIndexTap(item,index){
			// (必须!)关闭抽屉面板Item项(关闭所有的Item项)
			this.closeDrawerItem()
			// 将视频索引回调出去
			let e = {
				Events:'VideoSrcIndex',//标记>>改变视频索引时
				item,//当前视频信息
				index,//当前视频索引
				msg:'选集切换'
			}
			this.$emit('changeMyVideo',e)
			console.log('选集切换item')
			console.log(item)
			let go = false
			if (go==true){
				// 关闭抽屉面板Item项(关闭所有的Item项)
				this.closeDrawerItem()
				// 获取跳过片头时间，用于用户设置的跳过片头时间，然后去跳过片头
				let currtime = 0//跳过片头
				console.log('获取跳过片头时间=='+currtime)
				// 获取视频标题
				let title = item.title
				// 设置视频标题
				this.SetVideoTitle(title)
				// 设置视频链接
				this.src = item.url
				// 设置视频自动播放(不设置的话，默认不知道播放)
				this.video_autoplay = true
				// 设置视频播放
				this.play({Reset_backRate:true})
				// {Reset_backRate:true} 代表播放并重置倍速
				
				// 此处用于用户设置的跳过片头时间，然后去跳过片头
				// 设置跳到指定的播放时间
				this.SetVideoSeek(currtime)
				//
			}
		},
		
		// 用户点击了“收藏/已收藏”按钮
		UserloveTap(res){
			// 提示信息
			let msg 
			if (res==true){
				msg = '用户点击了“已收藏”，你应该执行取消收藏的业务事件'
			}else {
				msg = '用户点击了“收藏”，你应该执行加入收藏的业务事件'
			}
			// 用户点击了“收藏/已收藏”的事件回调出去
			let e = {
				Events:'isUserLove',//标记>>改变视频索引时
				UserloveTap:res,//点击了“收藏/已收藏”按钮状态回调出去
				msg
			}
			this.$emit('changeMyVideo',e)
		},
		// 用户点击了退出全屏时控制面板top-right的更多icon图标按钮
		gengduoTap(){
			// [退出全屏时]用户点击了“更多”的事件回调出去
			let e = {
				Events:'exitFullgengduo',//标记>>退出全屏时点击更多icon图标时
				msg:'[非全屏]用户点击了“更多”icon图标按钮'
			}
			this.$emit('changeMyVideo',e)
		},
		// 点击了“投屏”按钮
		toupingTap(){
			// 如果是在全屏下点击，则需要先退出全屏
			if (this.isFullScreenChange==true){
				// 退出全屏前，需要关闭抽屉面板，不然下次点击屏幕，没有控制面板显示
				// 关闭抽屉面板Item项(关闭所有的Item项)
				this.closeDrawerItem()
				setTimeout(()=>{
					// 暂停视频
					this.pause()
					// 退出全屏
					this.exitFullScreen()
					// 最低延时500毫秒等待抽屉面板关闭动画完毕，不延时有bug
				},500)
			}else {
				// 暂停视频
				this.pause()
			}
			
			// 2022-0203 调整
			// 获取是否有清晰度url链接，如果没有则使用默认url链接（已在播放的时候就获取好了）
			let url = this.src
			
			// 将投屏事件回调出去
			let e = {
				Events:'touping',//标记>>点击了“投屏”按钮
				url,//播放地址
				msg:'点击了“投屏”按钮'
			}
			this.$emit('changeMyVideo',e)
		},
		//
		
		
		
		// 点击了Back返回按钮（非全屏下）
		BackTap(){
			// 在全屏时，需要先退出全屏再回调事件出去，用于【20】手动播放控制界面的退出播放按钮
			if (this.isFullScreenChange == true){
				this.exitFullScreen()
			}
			let e = {
				msg:'点击了返回按钮'
			}
			this.$emit('changeBack',e)
		},
		
		// 点击了“暂无下一集”按钮
		NonextPlay(){
			// 后期把提示信息改成页面上的view盒子去显示
			// 目前先用unishow
			uni.showToast({
				title:'暂无下一集',
				icon:'none'
			})
		},
		// 点击了“音频”按钮
		AudioTap(e){
			// false=开启，true=关闭
			if (e == false) {
				// 创建音频上下文并播放
				this.createAudioContext()
				// 禁用手指触摸移动事件已添加至Touch.js
				// 关闭抽屉面板Item项 (关闭所有的Item项)
				this.closeDrawerItem()
			}else {
				// 销毁音频
				if (this.createAudio==true){
					// 判断是否是模拟音频
					if (this.moniAudio==true){
						// 是模拟音频，直接修改'创建音频'属性
						this.createAudio = false
					}else {
						// 不是模拟音频，需要销毁音频实例
						this.AudioDestroy()
						this.createAudio = false
						
						// 3.5.0版本 新增事件
						// 判断 模拟音频=false 并且 模拟音频播放进度更新事件=true
						if (this.moniAudio == false && this.Config.Simulation_Audio_timeupdate == true){
							// 跳转到视频指定位置播放（去除小数点后的数字）
							let current = parseInt(this.timeUpdate[0].currentTime)
							this.seek(current)
						}
						
						// 设置视频播放
						this.play()
					}
				}
				
			}
		},
		// 点击了“锁屏”按钮
		SuoPingTap(e){
			//console.log('锁屏='+e)
			
			if (e==false){
				// 打开锁屏面板
				this.isSuoPing = true
			}else if (e==true) {
				// 关闭锁屏面板
				this.isSuoPing = false
			}
		},
		
		
		
		
		
		
		// 是否循环播放>>播放方式 ? 连续播放 : 单集播放
		VideoloopTap(res){
			// 将播放方式回调出去，同步外面绑定的值，不然内部改变了，组件外面没有改变，然后又变成了组件绑定的值
			let e = {
				Events:'loopChange',//标记>>播放方式改变时
				loop: res,
				msg:'播放方式切换（是否循环播放>>播放方式 ? 连续播放 : 单集播放）'
			}
			this.$emit('changeMyVideo',e)
			this.video_loop = res
		},
		// 视频的表现形式>>contain：包含(自适应)，fill：填充(拉伸=铺满屏幕)，cover：覆盖(满屏=放大裁切)
		VideoobjectfitTap(res){
			// 将视频的表现形式回调出去，同步外面绑定的值，不然内部改变了，组件外面没有改变，然后又变成了组件绑定的值
			let e = {
				Events:'object_fitChange',//标记>>改变视频索引时
				object_fit: res,
				msg:'视频的表现形式（画面显示）>> contain：自适应，fill：拉伸，cover：满屏'
			}
			this.$emit('changeMyVideo',e)
			this.video_object_fit = res
		},
		// 是否跳过片头
		VideoSkipToTap(e){
			this.isSkipTo = e
			let options = {
				switch:e,
				SkipTitle:'跳过片头'
			}
			this.SetVideoSkipTextBubbleView(options)
		},
		// 是否跳过片尾
		VideoSkipWeiTap(e){
			this.isSkipWei = e
			let options = {
				switch:e,
				SkipTitle:'跳过片尾'
			}
			this.SetVideoSkipTextBubbleView(options)
		},
		// 设置跳过片头/片尾的文字气泡提示
		SetVideoSkipTextBubbleView(e){
			if (e.switch==true){
				// 获取名称(跳过片头?跳过片尾?)
				//var SkipTitle
				if (e.SkipTitle=='跳过片头'){
					var SkipTime = this.SkipToTime
					//
				}else if (e.SkipTitle=='跳过片尾') {
					var SkipTime = this.timeUpdate[0].duration-this.SkipToTime
				}
				// 将跳过片头的秒数转为分钟
				var minute = this.formatSeconds(SkipTime)
				// 设置气泡文字显示的标题
				var title = '已开启 '+e.SkipTitle+' '+minute
				// 设置气泡文字颜色
				var color
				// 获取模板文字色
				if (this.Template=='fiqy'){
					color = '#00e208'
				}else if (this.Template=='fyk') {
					color = '#00f8ff'
				}else {
					color = '#f1f1f1'
				}
				var options = {
					title,
					color,
					time:3000
				}
				// 打开气泡文字View抽屉盒子并设置标题
				this.openTextBubbleView(options)
			}else {
				// 关闭气泡文字View抽屉盒子
				this.closeTextBubbleView()
			}
		},
		// 下载icon图标按钮被点击
		downloadFileTap(){
			this.uniShowToast('敬请期待')
		},

		// 小窗播放icon图标按钮被点击
		goXiaoChuangPlayTap(){
			this.uniShowToast('敬请期待')
		},
		// 录屏icon图标按钮被点击
		lupinSDKTap(){
			this.uniShowToast('敬请期待')
		},		
	}
}